package com.example.demo.service;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.example.demo.config.ConfigBean;
import com.example.demo.entity.DownloadInfo;
import com.example.demo.entity.FileInfo;
import com.example.demo.entity.UserPermission;
import com.example.demo.utils.FileVersionCache;

import java.util.UUID;

/*
 * 文档预览 -> 详见： <br>
 */

@Service("WebOfficePreview")
public class WebOfficePreview implements PreviewService {
    @Autowired
    private ConfigBean configBean;

    @Override
    public FileInfo GetFileInfo(String fileId) {
        FileInfo fileInfo = new FileInfo();

        // 1. 获取file信息

        /*
         * 
         * 设置fileInfo的属性，这里的属性值仅供参考，实际业务中需要根据fileId查询文件信息
         */

        long createTime = System.currentTimeMillis()/1000;

        long modifyTime = System.currentTimeMillis()/1000;


        // 返回文件的最新版本号
        Long srcVersion = FileVersionCache.getInstance().get(fileId);

        fileInfo.setId(fileId);
        fileInfo.setName("新的文件.docx");
        fileInfo.setVersion(srcVersion);
        fileInfo.setSize(1024);
        fileInfo.setCreateTime(createTime);
        fileInfo.setModifyTime(modifyTime);
        fileInfo.setCreatorId("chenmin25");
        fileInfo.setModifierId("chenmin25");

        return fileInfo;
    }
    

    @Override
    public DownloadInfo GetDownloadInfo(String fileId) {
        DownloadInfo downloadInfo = new DownloadInfo();
        /*
         * 
         * 设置downloadInfo的属性，这里的属性值仅供参考，实际业务中需要根据fileId查询文件信息
         */
        String objectName = fileId;
        objectName = "chenmin/"+ objectName+".docx";
        String url = configBean.getOssURL() + objectName;

//        String url = configBean.getHost()+"/file/download/101.doc";
//        url="https://image.gt.cn/oss/images/smart-meeting/public/null/%E5%B8%A6%E7%9B%AE%E5%BD%95%E7%9A%84%E6%96%87%E6%A1%A3_%E6%9B%B4%E6%96%B0%E5%90%8E.docx";
        downloadInfo.setUrl(url); // 设置文档url,这里的地址换成实际fileID对应的最新文件下载地址，可以是oss的下载地址


        // downloadInfo.setDigestType("sha1"); // 如果下载不需要校验，可以不设置，设置了会对文件内容按照指定的算法进行校验，比对失败会下载失败
        // downloadInfo.setDigest("asdakfjskdljgkl;dfjkhlgfjldhj");     // 如果下载不需要校验，可以不设置
        downloadInfo.setHeaders(null);

        return downloadInfo;
    }

    @Override
    public UserPermission GetUserPermission(String fileId,String userId) {
        UserPermission userPermission = new UserPermission();
        /*
         * 设置userPermission的属性，这里的属性值仅供参考，实际业务中需要根据fileId设置对应的权限
         */
        userPermission.setComment(true);
        userPermission.setCopy(true);
        userPermission.setDownload(true);
        userPermission.setRead(true);
        userPermission.setPrint(true);
        userPermission.setHistory(false);
        userPermission.setUpdate(true);
        userPermission.setRename(false);
        userPermission.setSaveAs(true);
        userPermission.setUserId(userId);
        return userPermission;
    }
}
